function add(a,b,c){

    return a+b+c;
}

function curry(fn){
    // 函数嵌套函数 内部函数会被返回到外部 并得以执行
    // fn 等在闭包空间里的永生变量在被闭包函数声明时就已经存在
    // 声明时
    let judge=(...args)=>{
        if(args.length==fn.length) return fn(...args);
        // console.log(args)
        return (...arg)=>judge(...args,...arg);
    }
    // return (args)=>{
    //     // 函数运行时可以访问到声明时的变量
    // }
    return judge;
}

// 得到闭包的函数
let addCurry=curry(add);
// 执行函数
const ret=addCurry(1)(2)(3);
console.log(ret);